Elasticsearch-এ Ingest Processors হলো সেই উপাদান, যা Ingest Pipelines-এর মাধ্যমে ডেটাকে ইন্ডেক্স করার আগে প্রিপ্রোসেস বা এনরিচ করে। প্রতিটি প্রসেসর একটি নির্দিষ্ট কার্য সম্পাদন করে, যেমন ডেটা ট্রান্সফরমেশন, ফিল্ড পরিবর্তন, ভ্যালিডেশন, বা অতিরিক্ত তথ্য যোগ করা। Elasticsearch-এ অনেক ধরনের Ingest Processor রয়েছে, যা ডেটা ইন্ডেক্স করার আগে বিভিন্ন প্রক্রিয়া প্রয়োগ করতে ব্যবহার করা যায়। নিচে কিছু সাধারণ Ingest Processor এবং তাদের ব্যবহার নিয়ে আলোচনা করা হলো:
Set Processor একটি নির্দিষ্ট ফিল্ডে একটি মান সেট করে। এটি ডেটা প্রসেসিং-এর সময় নতুন ফিল্ড তৈরি করতে বা বিদ্যমান ফিল্ড আপডেট করতে ব্যবহৃত হয়।
সাধারণত ডেটা প্রসেসিং টাইমস্ট্যাম্প, স্ট্যাটিক ভ্যালু, বা কাস্টম মান সেট করতে এটি ব্যবহৃত হয়।
{
"set": {
"field": "processed_at",
"value": "{{_ingest.timestamp}}"
}
}
"processed_at"
ফিল্ডে ইনজেস্ট টাইমসট্যাম্প সেট করা হয়েছে, যা ডকুমেন্ট প্রসেসিং-এর সময় নির্ধারণ করে।Rename Processor একটি ফিল্ডের নাম পরিবর্তন করে। এটি এমন ক্ষেত্রে ব্যবহৃত হয়, যেখানে ডেটার ফিল্ডের নাম পরিবর্তন করতে হয়, যাতে তা আরও বর্ণনামূলক বা সামঞ্জস্যপূর্ণ হয়।
{
"rename": {
"field": "user_ip",
"target_field": "client_ip"
}
}
"user_ip"
ফিল্ডকে "client_ip"
নামে পরিবর্তন করা হয়েছে।Remove Processor একটি নির্দিষ্ট ফিল্ড মুছে ফেলে। এটি অপ্রয়োজনীয় বা সংবেদনশীল ডেটা বাদ দেওয়ার জন্য ব্যবহৃত হয়।
{
"remove": {
"field": "temporary_info"
}
}
"temporary_info"
ফিল্ডটি মুছে ফেলা হয়েছে।Convert Processor একটি ফিল্ডের ডেটা টাইপ পরিবর্তন করে। এটি সাধারণত ডেটার ফরম্যাটিং বা টাইপ পরিবর্তন করতে ব্যবহৃত হয়, যেমন string
থেকে integer
বা boolean
।
{
"convert": {
"field": "age",
"type": "integer",
"ignore_missing": true
}
}
"age"
ফিল্ডের ডেটা টাইপ integer
এ পরিবর্তন করা হয়েছে।Date Processor একটি নির্দিষ্ট ফিল্ডের তারিখের ফরম্যাট নির্ধারণ বা পরিবর্তন করে। এটি বিভিন্ন তারিখ ফরম্যাটকে স্ট্যান্ডার্ড ফরম্যাটে রূপান্তর করতে ব্যবহৃত হয়।
{
"date": {
"field": "log_date",
"formats": ["MM/dd/yyyy HH:mm:ss"],
"target_field": "formatted_date",
"output_format": "yyyy-MM-dd"
}
}
"log_date"
ফিল্ডের তারিখ "yyyy-MM-dd"
ফরম্যাটে রূপান্তর করে "formatted_date"
ফিল্ডে সংরক্ষণ করা হয়েছে।Grok Processor একটি প্যাটার্ন ব্যবহার করে টেক্সট থেকে ডেটা এক্সট্রাক্ট করে। এটি লগ বা টেক্সট ডেটার উপর ভিত্তি করে তথ্য বের করতে এবং আলাদা ফিল্ডে সংরক্ষণ করতে ব্যবহৃত হয়।
{
"grok": {
"field": "message",
"patterns": ["%{IP:client_ip} - - \\[%{HTTPDATE:timestamp}\\] \"%{WORD:method} %{URIPATHPARAM:request} HTTP/%{NUMBER:http_version}\" %{NUMBER:status} %{NUMBER:bytes}"]
}
}
"message"
ফিল্ড থেকে IP ঠিকানা, তারিখ, এবং HTTP পদ্ধতির মতো তথ্য এক্সট্রাক্ট করা হয়েছে।GeoIP Processor একটি IP ঠিকানা থেকে ভৌগোলিক তথ্য বের করে। এটি IP-এর ভিত্তিতে দেশ, শহর, এবং লোকেশন পয়েন্টের মতো অতিরিক্ত তথ্য যোগ করতে ব্যবহৃত হয়।
{
"geoip": {
"field": "client_ip",
"target_field": "geoip"
}
}
"client_ip"
ফিল্ড থেকে ভৌগোলিক তথ্য বের করে "geoip"
নামে একটি ফিল্ডে সংরক্ষণ করা হয়েছে।Uppercase এবং Lowercase Processor ফিল্ডের মানকে বড় অক্ষর (Uppercase) বা ছোট অক্ষর (Lowercase) এ রূপান্তর করে। এটি স্ট্রিং ডেটাকে নির্দিষ্ট ফরম্যাটে স্টোর করতে ব্যবহৃত হয়।
{
"uppercase": {
"field": "username"
}
}
"username"
ফিল্ডের মানকে বড় অক্ষরে রূপান্তর করা হয়েছে।Script Processor একটি কাস্টম স্ক্রিপ্ট ব্যবহার করে ডেটার উপর কাস্টম প্রসেসিং চালায়। এটি জটিল ট্রান্সফরমেশন বা লজিক প্রয়োগের ক্ষেত্রে ব্যবহৃত হয়।
{
"script": {
"source": "ctx.new_field = ctx.existing_field * 2"
}
}
"existing_field"
এর মানকে দ্বিগুণ করে "new_field"
নামে একটি নতুন ফিল্ডে সংরক্ষণ করা হয়েছে।Pipeline Processor একটি পাইপলাইনের ভেতর আরেকটি পাইপলাইন কল করতে ব্যবহৃত হয়। এটি Nested Pipelines তৈরি করতে এবং জটিল ডেটা প্রসেসিং পরিচালনা করতে সহায়ক।
{
"pipeline": {
"name": "child_pipeline"
}
}
আরও দেখুন...